package com.xnyzc.lhy.finance.service.invoice;

import com.xnyzc.lhy.common.entity.Rv;
import com.xnyzc.lhy.finance.entity.invoice.OaSysInvoiceApply;
import com.xnyzc.lhy.finance.entity.invoice.OaSysInvoiceDetail;
import com.xnyzc.lhy.finance.entity.invoice.OaSysInvoiceEmailSend;
import com.xnyzc.lhy.finance.entity.invoice.OaSysInvoiceInfo;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 发票表 服务类
 * </p>
 *
 * @author haoyfa
 * @since 2019-10-24
 */
public interface IOaSysInvoiceInfoService extends IService<OaSysInvoiceInfo> {
    /**
     * 创建发票操作
     */
    public Rv createInvoiceInfo(OaSysInvoiceApply oaSysInvoiceApply, OaSysInvoiceInfo oaSysInvoiceInfo, OaSysInvoiceDetail oaSysInvoiceDetail);

    /**
     * 开票成功操作
     */
    public Rv billingSuccessfulOperation(OaSysInvoiceInfo oaSysInvoiceInfo);

    /**
     * 开票失败操作
     */
    public Rv billingFailedOperation(OaSysInvoiceInfo oaSysInvoiceInfo);

    /**
     * 发票作废
     */
    public Rv invoiceInvalid(OaSysInvoiceInfo oaSysInvoiceInfo);

    /**
     * 发票发送记录创建，创建OaSysInvoiceEmailSend
     */
    public Rv InvoiceSendingRecordCreation(OaSysInvoiceEmailSend oaSysInvoiceEmailSend);

    /**
     * 查询OaSysInvoiceInfo by id
     */
    public Rv selectOaSysInvoiceInfoById(Long invoiceInfoId);

    /**
     * 删除操作
     */
    public Rv deletOaSysInvoiceById(Long invoiceApplyId);

    /**
     * 根据申请id获取发票信息id
     */
    public OaSysInvoiceInfo selectOaSysInvoiceInfoByApplyId(Long applyId);

    public Rv billingFarmatFileOperation(OaSysInvoiceInfo oaSysInvoiceInfo);
}